import java.util.Scanner;

/*
字符串问题：动态规划
 */
public class Demo1 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String s=sc.next();
        int ret=process(s);
        System.out.println(ret);
    }

    private static int process(String s) {
        if(s==null || s.length()==0)
        {
            return 0;
        }
        int N=s.length();
        char[] str=s.toCharArray();
        int[] dp=new int[N+1];
        dp[N]=1;
        for(int i=N-1;i>=0;i--)
        {

            if(str[i]=='0')
            {
                dp[i]=0;
            }
            else if(str[i]=='1')
            {
                //一个字符转换 ‘1’-》A
                dp[i]=dp[i+1];
                //二个字符转换 ‘11’-》K
                //先判断是否越界
                if(i+1<str.length)
                {
                    dp[i] = dp[i] + dp[i + 2];
                }
            }
            else if(str[i]=='2')
            {
                //一个字符转换 ‘1’-》A

                dp[i]=dp[i+1];
                //二个字符转换 ‘11’-》K
                //先判断是否越界，然后判断第二个字符的数字是否在0-6之间，因为只能在这个区间，才能被转换
                if(i+1<str.length && (str[i+1]>='0' && str[i+1]<='6'))
                {
                    dp[i]=dp[i]+dp[i+2];
                }
            }
            //当字符大于等于3的时候，就直接往下一位走就行
            else
            {
                dp[i]=dp[i+1];
            }

        }
        return dp[0];
    }
}
